﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using Entidades.Sistema.Base;
using Entidades.Sistema.Venta;
using System.Web;

namespace Modelo.Sistema.Base
{
    public class CatalogoEmpleado
    {
        private List<Empleado> Col_Empleados;
        Int32 res;

        public CatalogoEmpleado()
        {
            List<Empleado> empleados = (List<Empleado>)HttpContext.Current.Session["Col_Empleados"];
            if (empleados == null)
            {
                empleados = Mapping.Sistema.Base.MappingEmpleado.ConsultarEmpleados();
                HttpContext.Current.Session["Col_Empleados"] = empleados;
            }
            Col_Empleados = empleados;
        }
        public ReadOnlyCollection<Empleado> Listarempleados()
        {
            return Col_Empleados.AsReadOnly();
        }

        public bool AgregarEmpleado(Empleado oempleado)
        {
            string[] partes = oempleado.NombreApellido.Split(' ');

            string subcadena = partes[0];

            oempleado.IdUsuario = "usu" + subcadena;
            Col_Empleados.Add(oempleado);
            Mapping.Sistema.Base.MappingEmpleado.AgregarEmpleado(oempleado);
            HttpContext.Current.Session["Col_Empleados"] = Col_Empleados;
            return true;
        }

        public bool EliminarEmpleado(Empleado oempleado)
        {
            Col_Empleados.Remove(oempleado);
            Mapping.Sistema.Base.MappingEmpleado.EliminarEmpleado(oempleado);
            HttpContext.Current.Session["Col_Empleados"] = Col_Empleados;
            return true;
        }

        public void ModificarEmpleado(Empleado oempleado)
        {
            Mapping.Sistema.Base.MappingEmpleado.ModificarEmpleado(oempleado);
            Col_Empleados.RemoveAll(x => x.IdEmpleado == oempleado.IdEmpleado);
            Col_Empleados.Add(oempleado);
            HttpContext.Current.Session["Col_Empleados"] = Col_Empleados;
        }

        public Empleado BuscarEmpleado(string nombreEmpleado)
        {
            return this.Col_Empleados.Find(oEmp => oEmp.NombreApellido == nombreEmpleado);
        }

        public Empleado BuscarEmpleadoPornumero(string idEmpleado)
        {
            return this.Col_Empleados.Find(oEmp => oEmp.IdUsuario == idEmpleado);
        }

        public bool ValidarExistencia(Empleado oEmpleado)
        {
            if (this.Col_Empleados.Count(unid => unid.IdUsuario == oEmpleado.IdUsuario) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
